/**
 * Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * HOJA DE TRABAJO #2
 * Oscar Antonio González Natareno 10277
 */

/**
 * DESCRIPCIÓN: Esta clase define las acciones que pueden realizar las Nodos.
 */

public class Node<E> {
    
    /* VARIABLES DE INSTANCIA */
    private E elemento;
    private Node<E> siguiente; 
    
    /* CONSTRUCTOR DE LA CLASE NODE (PREDEFINIDO) */
    /**
     * Se crea un Nodo sin referencia alguna a su elemento o al siguiente nodo.
     */
    public Node() {
        this(null,null);
    }
    
    /* CONSTRUCTOR DE LA CLASE NODE (PERSONALIZADO */
    /*
     * Se crea un nodo con referencia a un elemento y al siguiente Nodo.
     */
    public Node(E e, Node<E> n) {
        elemento = e;
        siguiente = n;
    }
    
    /* MÉTODOS DE ACCESO A LOS NODOS */
    
    /**
     * Permite obtener el elemento que se encuentra en el Nodo.
     * @return Elemento localizado en el Nodo.
     */
    public E getElemento() {
        return elemento;
    }
    
    /*
     * Permite obtener el próximo Nodo.
     */
    public Node<E> getSiguiente() {
        return siguiente;
    }
    
    /* MÉTODO DE MODIFICACIÓN A LOS NODOS */
    
    /**
     * Permite ingresar un nuevo elemento al Nodo.
     * @param nuevo 
     */
    public void setElemento(E nuevo) {
        elemento = nuevo;
    }
    
    /**
     * Permite ingresar un nuevo elemento al próximo Nodo. 
     * @param nuevo 
     */    
    public void setSiguiente(Node<E> nuevo){
        siguiente = nuevo;
    }
}
